package done.normal_201_300;

import org.junit.Test;

import java.util.List;

import static com.study.util.LogUtil.info;

/**
 * 216. Combination Sum III 组合总和 III
 * <p>
 * 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数，并且每种组合中不存在重复的数字。
 * 说明：
 * 所有数字都是正整数。
 * 解集不能包含重复的组合。
 * <p>
 * 示例 1:
 * 输入: k = 3, n = 7
 * 输出: [[1,2,4]]
 * <p>
 * 示例 2:
 * 输入: k = 3, n = 9
 * 输出: [[1,2,6], [1,3,5], [2,3,4]]
 * <p>
 * 2019-05-29 23:02
 **/
@SuppressWarnings("all")
public class CombinationSumIII {

    public List<List<Integer>> combinationSum3(int k, int n) {
        // 190530 first
        return null;
    }

    @Test
    public void test() {
        info("[[1, 2, 4]] -> {}", combinationSum3(3, 7));
        info("[[1, 2, 6], [1, 3, 5], [2, 3, 4]] -> {}", combinationSum3(3, 9));
    }
}








































/*
public List<List<Integer>> combinationSum3(int k, int n) {
    List<List<Integer>> result = new ArrayList<>();
    calculate(result, new ArrayList<>(), 1, k, n);
    return result;
}

private void calculate(List<List<Integer>> result, List<Integer> temp , int pre, int k, int n) {
    if (n < 0)
        return;

    if (n == 0 && temp.size() == k) {
        result.add(new ArrayList<>(temp));  //返回一个新的集合
        return;
    }

    for (int i = pre; i < 10; i++) {
        temp.add(i);
        calculate(result, temp, i + 1, k, n - i);
        temp.remove(temp.size() - 1);  //删除刚加进去的那个
    }
}
*/